Typically, when users want a software application customized to meet their needs, it is necessary for application developers to use a programming language or software development environment to modify existing code. However, it is expensive in terms of both time and money for application developers to customize software. Consequently, it is advantageous if users could customize the applications themselves.
In particular, if an application is needed to be deployed in two or more languages, traditional software developers would write multiple versions of the same screen, causing the number of screens in the system to be increase by a factor of two or more. In a traditional system, a different set of screens would be required to support each additional language. It is expensive to support multilingual requirements in this manner.
Error messages are another area that users would like to customize. Frequently, error messages are written in a technical way that an applications developer can understand, but not necessarily a user. There is a strong need in the industry to be able to provide users a tool that they themselves (or documentation writers) can use to write meaningful, user-friendly error messages.
Context-sensitive help is becoming a standard in the computer industry. End user applications are becoming increasingly documented with help screens. However, the effectiveness of help still could be greatly improved by giving users or documentation writers the power to write their own error messages.
The ability to support a sophisticated access control and security mechanism is another important aspect that can be thought of as customizing software. Different users who have different roles will have varying security requirements.
Finally, unique and different client preferences are another aspect that contribute to increasingly complex systems administration. Frequently, in computer systems the preferences are supported by generating multiple versions of the applications, each of which needs to be compiled and deployed appropriately throughout the organization. This creates an overall computing environment that is very unstable and difficult to support. In addition, users may not be able to express their display preferences until the testing phase, or even later such as when the entire system is in production. Consequently, there is a need for users to be able to customize their own desktops, including setting their own display preferences.
Today's programming languages and system development environments are complex, and mastered only by programmers, not by end users. Providing an environment or system in which users can specify their own customizations greatly increases the control that users have over their system, and users can then maintain their own customization information.
Given the above problems, the present invention provides novel methods and computer systems which give a user the capability to flexibly alter the run-time version of a program they are operating, while avoiding the shortcomings and drawbacks of prior methodologies.